# @Time : 2024-10-24 11:43
# @Author : Fioman 
# @Phone : 13149920693
"""
普通属性: 无前缀  类内和子类和外部都可以访问  公共属性,任何地方都可以访问
受保护属性 _val 单下划线开始 类内和类外子类都可以访问,类外不推荐
私有属性 __val 双下划线开始 类内可以访问,类外和子类无法直接访问,可以通过特殊方式(提供方法或者是
使用特殊语法)
"""


class Animal:
    def __init__(self, name, age, secret):
        self.name = name  # 普通属性
        self._age = age  # 受保护属性
        self.__secret = secret

    def _get_age(self):  # 受保护方法
        return self._age

    def get_secret(self): return self.__secret


class Dog(Animal):
    def display_info(self):
        return f"Dog: {self.name}, age: {self._age}"


dog = Dog("Bubby", 5, "私有属性")
print(dog.display_info())
print(dog._age)  # 不推荐,但是也可以访问

# print(dog.__secret)  # 无法直接访问
print(dog.get_secret())  # 可以通过这种方式访问
print(dog._Animal__secret)  # 这种方式也行,私有属性最后会被封装成.类名私有属性的方式
# .ClassName{私有属性}
